package com.industrial.app.service.impl;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;

import com.industrial.app.domain.formal.BizIndustrialSectorMetricsFormal;
import com.industrial.app.domain.request.BizIndustrialSectorRequest;
import com.industrial.app.mapper.BizIndustrialSectorMetricsFormalMapper;
import com.industrial.app.service.IBizIndustrialSectorMetricsFormalService;
import com.industrial.common.core.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 分行业企业主要经济指标正式Service业务层处理
 *
 * @author SangGuangCan
 * @date 2024-01-02
 */
@Service
public class BizIndustrialSectorMetricsFormalServiceImpl implements IBizIndustrialSectorMetricsFormalService
{
    private final BizIndustrialSectorMetricsFormalMapper bizIndustrialSectorMetricsFormalMapper;

    @Autowired
    public BizIndustrialSectorMetricsFormalServiceImpl(BizIndustrialSectorMetricsFormalMapper bizIndustrialSectorMetricsFormalMapper){
        this.bizIndustrialSectorMetricsFormalMapper = bizIndustrialSectorMetricsFormalMapper;
    }

    /**
     * 查询分行业企业主要经济指标正式
     *
     * @param baseId 分行业企业主要经济指标正式主键
     * @return 分行业企业主要经济指标正式
     */
    @Override
    public BizIndustrialSectorMetricsFormal selectBizIndustrialSectorMetricsFormalByBaseId(String baseId)
    {
        return bizIndustrialSectorMetricsFormalMapper.selectBizIndustrialSectorMetricsFormalByBaseId(baseId);
    }

    /**
     * 查询分行业企业主要经济指标正式列表
     *
     * @param bizIndustrialSectorMetricsFormal 分行业企业主要经济指标正式
     * @return 分行业企业主要经济指标正式
     */
    @Override
    public List<BizIndustrialSectorMetricsFormal> selectBizIndustrialSectorMetricsFormalList(BizIndustrialSectorMetricsFormal bizIndustrialSectorMetricsFormal)
    {
        return bizIndustrialSectorMetricsFormalMapper.selectBizIndustrialSectorMetricsFormalList(bizIndustrialSectorMetricsFormal);
    }

    /**
     * 新增分行业企业主要经济指标正式
     *
     * @param bizIndustrialSectorMetricsFormal 分行业企业主要经济指标正式
     * @return 结果
     */
    @Override
    public int insertBizIndustrialSectorMetricsFormal(BizIndustrialSectorMetricsFormal bizIndustrialSectorMetricsFormal)
    {
        bizIndustrialSectorMetricsFormal.setBaseId(IdUtil.simpleUUID());
        bizIndustrialSectorMetricsFormal.setBaseCreateTime(DateUtils.getNowDate());
        return bizIndustrialSectorMetricsFormalMapper.insertBizIndustrialSectorMetricsFormal(bizIndustrialSectorMetricsFormal);
    }

    /**
     * 修改分行业企业主要经济指标正式
     *
     * @param bizIndustrialSectorMetricsFormal 分行业企业主要经济指标正式
     * @return 结果
     */
    @Override
    public int updateBizIndustrialSectorMetricsFormal(BizIndustrialSectorMetricsFormal bizIndustrialSectorMetricsFormal)
    {
        return bizIndustrialSectorMetricsFormalMapper.updateBizIndustrialSectorMetricsFormal(bizIndustrialSectorMetricsFormal);
    }

    /**
     * 批量删除分行业企业主要经济指标正式
     *
     * @param baseIds 需要删除的分行业企业主要经济指标正式主键
     * @return 结果
     */
    @Override
    public int deleteBizIndustrialSectorMetricsFormalByBaseIds(String[] baseIds)
    {
        return bizIndustrialSectorMetricsFormalMapper.deleteBizIndustrialSectorMetricsFormalByBaseIds(baseIds);
    }

    /**
     * 删除分行业企业主要经济指标正式信息
     *
     * @param baseId 分行业企业主要经济指标正式主键
     * @return 结果
     */
    @Override
    public int deleteBizIndustrialSectorMetricsFormalByBaseId(String baseId)
    {
        return bizIndustrialSectorMetricsFormalMapper.deleteBizIndustrialSectorMetricsFormalByBaseId(baseId);
    }

    /**
     * @return
     */
    @Override
    public List<String> getUniqueDatesFromDatabase() {
        List<String> uniqueDatesFromDatabase = bizIndustrialSectorMetricsFormalMapper.getUniqueDatesFromDatabase();
        if(!uniqueDatesFromDatabase.isEmpty()){
            //Mysql中去重关键字和排序不能对同一字段同时使用，这里通过代码来去重
            return uniqueDatesFromDatabase.stream().distinct().collect(Collectors.toList());
        }
        return uniqueDatesFromDatabase;
    }

    /**
     * 查询
     * @param request 前端传入的数据
     * @return 查询结果
     */
    @Override
    public List<BizIndustrialSectorMetricsFormal> getAppTableData(BizIndustrialSectorRequest request) {
        String dates = request.getDates();
        DateTime parse = DateUtil.parse(dates, "yyyy年MM月");
        request.setDates(DateUtil.format(parse,"yyyy-MM-dd"));

        return bizIndustrialSectorMetricsFormalMapper.getAppTableData(request);
    }
}
